Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

120 / Конструктор движений #413

Merged
merged 12 commits into from
Sep 24, 2024
Merged

120 / Конструктор движений #413

merged 12 commits into from
Sep 24, 2024

Conversation

alkoleft
Copy link
Member

@alkoleft alkoleft commented Sep 21, 2024

Описание изменений

  • Конструктор установки движений документа
  • Конструктор коллекций

  • Добавлены тесты
  • Изменения отражены в документации (при необходимости)

Close #120

Summary by CodeRabbit

  • Новые функции
    • Добавлены функции для управления коллекциями и инициализации конструкторов движений.
    • Введены новые процедуры для тестирования функциональности конструкторов движений.
    • Добавлен новый модуль для обработки данных, связанный с движениями.
    • Добавлена процедура для проверки корректности обменных курсов перед записью.
    • Добавлены новые функции для создания и управления записями в контексте конструкторов движений.
  • Исправления ошибок
    • Обновлены функции для улучшения обработки данных и обеспечения корректной работы с контекстами.
  • Документация
    • Обновлены конфигурационные файлы для отражения новых модулей и процессоров данных.

Copy link

coderabbitai bot commented Sep 21, 2024

Walkthrough

Внесенные изменения охватывают несколько файлов, связанных с управлением данными и тестированием в контексте клиент-серверного взаимодействия. Основные изменения включают добавление новых функций для работы с объектами и таблицами, а также улучшение обработки движений в регистрах. В результате система теперь поддерживает более сложные операции с данными и тестами, а также улучшена структура модулей для повышения ясности и удобства использования.

Changes

Файл Изменения
exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl Добавлены функции для создания объектов и работы с данными таблиц и коллекций.
fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl Добавлена процедура для проверки корректности курса валют перед записью.
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl Добавлены процедуры для тестирования функциональности конструкторов движений в контексте обработки документов.

Assessment against linked issues

Objective Addressed Explanation
Создание движений в Регистре сведений подчинённый регистратору (120)
Исправление ошибки при вызове метода контекста (120) Ошибка не была устранена в текущих изменениях.

🐇 В мире кода, где функции живут,
Новый модуль в тестах нас ждет,
Коллекции, данные — всё в порядке,
С rabbit'ом вместе мы в радости вряд ли!
Пусть ошибки уйдут, как ветер весной,
В нашем коде теперь всё будет с тобой! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    -- I pushed a fix in commit <commit_id>, please review it.
    -- Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    -- @coderabbitai generate unit testing code for this file.
    -- @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    -- @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    -- @coderabbitai read src/utils.ts and generate unit testing code.
    -- @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    -- @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SonarQube Quality Gate failed! failed

bug 1 Bugs
vulnerability 0 Vulnerabilities
code_smell 1 Code Smells

No data Coverage
duplication_lt_20 25.85% Duplication

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

Outside diff range and nitpick comments (6)
tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (4)

32-36: Напоминание: реализовать тест.

Процедура Инициализировать в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.

Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?


38-42: Напоминание: реализовать тест.

Процедура ДобавитьКолонку в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.

Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?


44-48: Напоминание: реализовать тест.

Процедура Добавить в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.

Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?


50-54: Напоминание: реализовать тест.

Процедура Данные в настоящее время содержит заглушку, которая вызывает исключение с сообщением "Тест не реализован". Пожалуйста, не забудьте реализовать фактическую логику теста.

Хотите, чтобы я открыл задачу в GitHub для отслеживания этой работы?

tests/src/Configuration/Configuration.mdo (2)

33-33: Добавлен новый общий модуль CommonModule.Обр_ЮТКонструкторДвижений_МО.

Пожалуйста, предоставьте более подробную информацию о назначении и использовании этого модуля. Это поможет лучше понять его роль в общей функциональности и облегчит дальнейшее сопровождение кода.


47-47: Добавлен новый общий модуль CommonModule.ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер.

Пожалуйста, предоставьте более подробную информацию о назначении и использовании этого модуля. В частности, поясните:

  • Какую функциональность он предоставляет в контексте работы с коллекциями?
  • Как он взаимодействует с существующим модулем CommonModule.ОМ_ЮТКоллекции?
  • Какие аспекты реализованы на клиенте, а какие на сервере?

Это поможет лучше понять архитектуру и облегчит дальнейшее сопровождение кода.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 755cbf8 and 9bcb1a8.

Files selected for processing (14)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (8 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (1 hunks)
  • exts/yaxunit/src/Configuration/Configuration.mdo (2 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (1 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ЮТКонструкторДвижений.mdo (1 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1 hunks)
  • tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1 hunks)
  • tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Обр_ЮТКонструкторДвижений_МО.mdo (1 hunks)
  • tests/src/Configuration/Configuration.mdo (2 hunks)
Additional comments not posted (29)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Обр_ЮТКонструкторДвижений_МО.mdo (1)

1-7: Определение общего модуля выглядит корректным.

Новый общий модуль "Обр_ЮТКонструкторДвижений_МО" определен правильно:

  • XML-структура соответствует формату метаданных.
  • Модуль помечен как управляемое клиентское приложение, серверное приложение и обычное клиентское приложение, что указывает на его возможности работы как на клиенте, так и на сервере.
  • Включен уникальный идентификатор (UUID) для однозначной идентификации модуля.

Определение модуля соответствует стандартам и готово к использованию.

tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1)

1-7: Изменения выглядят хорошо!

Новый общий модуль "ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер" объявлен корректно:

  • XML-структура соответствует формату метаданных и использует правильное пространство имен.
  • Свойства модуля, такие как clientManagedApplication, server и clientOrdinaryApplication, установлены должным образом.

Никаких проблем с конфигурацией модуля не обнаружено.

exts/yaxunit/src/CommonModules/ЮТКонструкторКоллекцийСлужебныйКлиентСервер/ЮТКонструкторКоллекцийСлужебныйКлиентСервер.mdo (1)

1-11: Новый общий модуль выглядит хорошо!

Структура XML-файла правильная и соответствует ожидаемой схеме метаданных. Общий модуль имеет уникальный идентификатор UUID, русский синоним и правильно помечен как клиентское, серверное и обычное клиентское приложение.

Никаких проблем не обнаружено. Добавление нового общего модуля одобрено.

exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ЮТКонструкторДвижений.mdo (1)

1-13: Новый класс обработки данных соответствует ожидаемой структуре и соглашениям.

Представленный XML-файл правильно определяет новый класс обработки данных "ЮТКонструкторДвижений" в рамках метаданных. Файл точно указывает структуру и свойства обработчика данных, включая его UUID, производимые типы, имя, синоним и использование стандартных команд. Введение этого нового класса обработки данных расширяет возможности системы по управлению движениями данных и коллекциями.

tests/src/CommonModules/ОМ_ЮТКонструкторКоллекцийСлужебныйКлиентСервер/Module.bsl (1)

21-30: Выглядит хорошо!

Процедура ИсполняемыеСценарии корректно добавляет набор тестовых сценариев в тестовый набор с использованием объекта ЮТТесты. Каждый добавленный тест соответствует процедуре, определенной далее в файле.

tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (8)

21-33: LGTM!

Процедура ИсполняемыеСценарии корректно инициализирует набор тестов с использованием ЮТТесты.ВТранзакции(). Логика и синтаксис выглядят правильно.


35-49: LGTM!

Процедура ДобавитьСтроку корректно тестирует метод "ДобавитьСтроку" конструктора движений. Она проверяет, что метод не выбрасывает исключение и возвращает ожидаемую структуру данных. Логика и синтаксис выглядят правильно.


51-68: LGTM!

Процедура Установить корректно тестирует метод "Установить" конструктора движений. Она проверяет, что метод выбрасывает исключение, если вызван до добавления строки, и что после добавления строки и установки контрагента структура данных содержит ожидаемые свойства. Логика и синтаксис выглядят правильно.


70-74: Пропустить.

Процедура УстановитьРеквизиты является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.


76-80: Пропустить.

Процедура Фикция является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.


82-86: Пропустить.

Процедура ФикцияРеквизитов является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.


88-92: Пропустить.

Процедура ФикцияОбязательныхПолей является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.


94-98: Пропустить.

Процедура Инициализировать является заглушкой и не содержит реализации теста. Пока нет необходимости в комментариях.

exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl (1)

274-274: Изменение выглядит корректным, но требует дополнительной проверки.

Изменение в реализации функции ДанныеСтроки заключается в вызове метода ДанныеСтрокиТабличнойЧасти вместо ДанныеСтроки. Это указывает на изменение логики обработки данных.

Чтобы убедиться, что это изменение не повлияет на работу кода, выполните следующий скрипт для поиска использований функции ДанныеСтроки и проанализируйте, ожидаемо ли изменение поведения и совместимо ли оно:

Verification successful

Изменение локализовано и не должно повлиять на другие части кодовой базы

Анализ использования функции ДанныеСтроки() показал, что изменение затрагивает только файл ./exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl. Другие объявления этой функции в кодовой базе остались без изменений.

Однако стоит отметить:

  • Функция используется в нескольких тестовых файлах.
  • Рекомендуется провести тщательное тестирование, чтобы убедиться, что изменение не повлияло на работу тестов и функциональность в целом.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск использований функции `ДанныеСтроки` в коде.

# Тест: Поиск вызовов функции `ДанныеСтроки`. 
# Ожидание: Только вызовы функции `ДанныеСтроки` без аргументов.
rg --type bsl $'ДанныеСтроки\(\)'

Length of output: 62


Script:

#!/bin/bash
# Описание: Поиск использований функции `ДанныеСтроки` в коде .bsl файлов.

# Поиск .bsl файлов и поиск в них вызовов функции `ДанныеСтроки()`
echo "Поиск вызовов ДанныеСтроки() в .bsl файлах:"
find . -name "*.bsl" -type f -exec grep -Hn "ДанныеСтроки()" {} +

# Альтернативный метод с использованием ripgrep
echo "Альтернативный поиск с использованием ripgrep:"
rg --type-add 'bsl:*.bsl' -t bsl "ДанныеСтроки\(\)"

Length of output: 1904

exts/yaxunit/src/Configuration/Configuration.mdo (2)

90-90: Добавлен новый общий модуль ЮТКонструкторКоллекцийСлужебныйКлиентСервер.

Этот модуль расширяет функциональность конфигурации. Судя по названию, он предназначен для конструирования коллекций и может использоваться как на клиенте, так и на сервере.


163-163: Добавлен новый обработчик данных ЮТКонструкторДвижений.

Этот обработчик расширяет функциональность конфигурации. Судя по названию, он предназначен для конструирования движений документов.

exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1)

310-320: Выглядит хорошо!

Реализация функции ОписаниеРегистраДвиженийДокумента корректна и хорошо структурирована:

  • Функция принимает два параметра: Документ и ИмяРегистра, и возвращает описание метаданных регистра движения документа с указанным именем.
  • Логика функции проста для понимания. Она проверяет наличие регистра с указанным именем в наборе регистров движения документа, используя функцию РегистрыДвиженийДокумента.
  • Если регистр не найден, функция возвращает Неопределено. Это позволяет корректно обрабатывать случаи, когда запрошенный регистр отсутствует.
  • Если регистр найден, функция возвращает его описание метаданных, используя функцию ОписаниеОбъектаМетаданных.

Функция будет полезна в сценариях, где требуется получить доступ к метаданным конкретного регистра движения документа.

exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl (2)

858-862: Изменения выглядят хорошо!

Новая экспортная функция КонструкторДвижений корректно делегирует инициализацию конструктора движений модулю ЮТКонструкторТестовыхДанныхСлужебный. Логика и синтаксис функции в порядке.


858-862: Проверьте использование новой функции в кодовой базе.

Убедитесь, что вызовы новой функции КонструкторДвижений корректно обрабатываются и не приводят к ошибкам.

Запустите следующий скрипт для проверки использования функции:

Verification successful

Функция КонструкторДвижений корректно реализована и используется в кодовой базе.

Проверка показала, что новая функция КонструкторДвижений успешно внедрена в модуль ЮТТестовыеДанные и используется в тестовых модулях. Функция инициализируется с помощью ЮТКонструкторТестовыхДанныхСлужебный.ИнициализироватьКонструкторДвижений, что соответствует ожидаемому поведению. В найденных случаях использования не обнаружено очевидных ошибок или некорректного применения функции.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка использования функции `КонструкторДвижений` в кодовой базе.

# Тест: Поиск вызовов функции. Ожидается: Только корректное использование.
rg --type bsl -A 5 $'КонструкторДвижений'

Length of output: 204


Script:

#!/bin/bash
# Описание: Проверка использования функции `КонструкторДвижений` в кодовой базе.

# Поиск вызовов функции с помощью ast-grep
ast-grep --lang bsl --pattern 'КонструкторДвижений($_)'

# Если ast-grep не найдет результатов, выполним поиск с помощью rg
if [ $? -ne 0 ]; then
  echo "Результаты поиска с помощью ripgrep:"
  rg -i 'КонструкторДвижений' -A 5
fi

Length of output: 10380

exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (2)

124-128: Проверьте корректность обработки массивов в методе ФикцияРеквизитов.

Если ИменаРеквизитов передается как массив, убедитесь, что метод ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов правильно обрабатывает этот тип данных. Возможно, потребуется добавить проверки или преобразования типов.


57-62: Убедитесь в корректности обработки ошибок в методе Установить.

Метод Установить вызывает ЮТКонструкторТестовыхДанныхСлужебный.Установить, но неизвестно, как обрабатываются возможные исключения или ошибки в вызываемом методе. Рекомендуется добавить обработку ошибок или подтвердить, что вызываемый метод надежно обрабатывает исключительные ситуации.

exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (8)

174-174: Переименование функции для повышения ясности

Переименование функции ДанныеСтроки в ДанныеСтрокиТабличнойЧасти улучшает понимание ее назначения и делает код более понятным.


190-199: Добавлена функция для работы с коллекциями

Новая функция ДанныеСтрокиКоллекции корректно реализует получение данных последней строки коллекции. Проверки на заполненность данных и обработка исключений реализованы правильно.


229-244: Инициализация конструктора движений

Функция ИнициализироватьКонструкторДвижений корректно инициализирует конструктор движений в зависимости от типа приложения (сервер или клиент). Использование условной компиляции и методов получения формы соответствует лучшим практикам для платформы 1С.


278-289: Создание нового контекста конструктора движений

Функция НовыйКонтекстКонструктораДвижений правильно инициализирует контекст для конструктора движений, устанавливая необходимые свойства. Логика функции соответствует ожиданиям.


333-333: Использование функции ФокусНаТабличнойЧасти

В функции Реквизиты добавлена проверка Если ФокусНаТабличнойЧасти(Контекст) Тогда, что повышает читаемость и переиспользуемость кода.


347-347: Улучшение сообщения об ошибке

Добавление проверки Если ФокусНаТабличнойЧасти(Контекст) Тогда при формировании пояснения позволяет предоставить более точное сообщение об ошибке, указывая на конкретную табличную часть.


362-365: Корректировка логики функции ТекущаяЗапись

Добавление условия ИначеЕсли ЭтоКонструкторКоллекции(Контекст) Тогда обеспечивает правильное определение текущей записи в контексте конструктора коллекции, что улучшает работу функции в разных сценариях.


379-384: Новая функция ФокусНаТабличнойЧасти

Функция ФокусНаТабличнойЧасти правильно определяет, находится ли текущий фокус на табличной части. Это повышает читаемость кода и способствует его повторному использованию.

@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 22, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 22, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 24, 2024
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Outside diff range and nitpick comments (8)
tests/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl (1)

91-97: Улучшение генерации тестовых данных для РегистрСведений.КурсыВалют

Изменения улучшают процесс генерации тестовых данных для регистра сведений "КурсыВалют":

  1. Улучшена читаемость кода проверки наличия записей.
  2. Добавлено случайное значение для поля "Курс", что повышает разнообразие тестовых данных.

Эти изменения повышают качество и надежность тестов.

Для дополнительного улучшения, рассмотрите возможность вынесения генерации случайного курса в отдельную функцию:

Функция ПолучитьСлучайныйКурс()
	Возврат ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
КонецФункции

// Использование:
Курс = ПолучитьСлучайныйКурс();

Это повысит читаемость кода и облегчит повторное использование логики генерации случайного курса в других тестах.

tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl (1)

45-50: Улучшение генерации тестовых данных для курсов валют.

Изменения улучшают генерацию тестовых данных, используя случайное положительное число для курса валюты вместо фиксированного значения. Это повышает надежность тестов, вводя вариативность.

Для дальнейшего улучшения читаемости кода, рассмотрите возможность выделения генерации случайного курса в отдельную функцию:

+Функция СгенерироватьСлучайныйКурс()
+    Возврат ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
+КонецФункции

 Процедура СодержитЗаписи() Экспорт
     // ...
-    Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
+    Курс = СгенерироватьСлучайныйКурс();
     // ...
 КонецПроцедуры

Это сделает код более модульным и облегчит повторное использование логики генерации случайного курса в других тестах.

Also applies to: 56-56

documentation/docs/features/test-data/data-generation.md (5)

95-123: Отличное дополнение документации!

Новый раздел "Создание пустышек" предоставляет ценную информацию о создании минимальных записей в базе данных для тестирования. Примеры наглядно демонстрируют различные способы создания элементов, документов и групп.

Однако есть небольшая грамматическая ошибка в описании.

Предлагаю исправить следующую опечатку:

-Создание записей в базе с минимальным заполнения (наименование, код, номер, дата).
+Создание записей в базе с минимальным заполнением (наименование, код, номер, дата).
Tools
LanguageTool

[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...

(Unify_Adj_NN_case)


133-162: Отличное дополнение к документации!

Новый раздел "Конструктор объекта" представляет мощный инструмент КонструкторОбъекта для создания тестовых объектов. Четко перечислены преимущества использования конструктора, что помогает разработчикам понять его ценность.

Пример использования конструктора очень информативен и демонстрирует различные возможности инструмента.

Для улучшения читаемости примера предлагаю добавить пустую строку перед циклом:

ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик);

+
Для Инд = 1 По 3 Цикл
    Конструктор.ДобавитьСтроку()
        .Фикция("Товар")
        .УстановитьРеквизиты(ОбщиеДанные)
        .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2))
        .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20))
        .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество)
КонецЦикла;

164-205: Отличное дополнение к документации!

Новый раздел "Конструктор движения документа" представляет полезный инструмент КонструкторДвижений для создания движений документа. Четко перечислены преимущества использования конструктора, что помогает разработчикам понять его ценность в контексте формирования движений.

Примеры использования конструктора очень информативны и демонстрируют работу с различными типами регистров.

Для улучшения согласованности во втором примере предлагаю изменить комментарий перед циклом:

-// Заполнение движений
+// Формирование движений
Для Инд = 1 По 10 Цикл
    Конструктор
        .ДобавитьСтроку()
        .Установить("Покупатель", Покупатель)
        .ФикцияРеквизитов("Товар, Сумма");
КонецЦикла;

Это сделает терминологию более согласованной с предыдущим примером, где используется термин "формирование".


Line range hint 206-286: Отличное расширение раздела о работе с XDTO!

Дополненный раздел о создании объектов XDTO предоставляет более подробную информацию о работе с КонструкторОбъектаXDTO. Пример использования конструктора очень информативен и демонстрирует различные возможности инструмента.

Подробное объяснение API конструктора XDTO объектов очень полезно и поможет пользователям эффективно использовать этот инструмент.

Для улучшения читаемости примера предлагаю добавить пустую строку перед созданием объекта:

Сумма = ЮТест.Данные().СлучайноеЧисло();
Реквизиты = Новый Структура("Number, Сумма", Номер, Сумма);

+
Объект = ЮТест.Данные().КонструкторОбъектаXDTO(Тип.ИмяТипа, Тип.URIПространстваИмен)
  .Установить("Date", Дата)
  .ФикцияОбязательныхПолей()
  .УстановитьРеквизиты(Реквизиты)
  .Фикция("Покупатель")
  .ДобавитьНовый("Товары")
    .ФикцияРеквизитов("Цена, Количество")
  .ДанныеОбъекта();
Tools
LanguageTool

[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...

(Unify_Adj_NN_case)


Line range hint 287-391: Отличное дополнение практических примеров!

Новые примеры "Генерация фейкового документа" и "Генерация произвольных фейковых данных" значительно улучшают документацию, демонстрируя реальные сценарии использования инструментов генерации данных. Примеры охватывают различные ситуации и показывают, как эффективно использовать инструменты для создания тестовых данных.

Код в примерах хорошо структурирован и легко читается, что поможет пользователям быстро понять и применить эти техники в своих проектах.

Для улучшения согласованности во втором примере предлагаю добавить комментарии к функциям, как это сделано в первом примере:

+// Пример генерации описания сервера
Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт
    
    Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ");
    
    // ... (остальной код функции)
    
КонецФункции

+// Пример генерации описания заявки на создание виртуальной машины
Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт
    
    Описание = Новый Структура();
    
    // ... (остальной код функции)
    
КонецФункции

+// Пример создания нового образа Docker
Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт
    
    Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию");
    
    // ... (остальной код функции)
    
КонецФункции

Это улучшит читаемость и поможет пользователям быстрее понять назначение каждой функции.

tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1)

636-636: Одобрено: Установка случайного курса в конструкторе объекта.

Правильно, что теперь используется случайное значение курса вместо фиктивной функции. Это улучшает качество теста.

Рекомендую добавить комментарий, объясняющий, почему используется случайное значение для курса. Например:

 .Фикция("Период")
+// Используем случайный курс для более реалистичного тестирования
 .Установить("Курс", Курс);
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between bb4cc59 and 420782b.

Files selected for processing (19)
  • documentation/docs/features/test-data/data-generation.md (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (17 hunks)
  • exts/yaxunit/src/CommonModules/ЮТРазрешениеЗависимостейСлужебныйКлиент/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебныйСервер/Module.bsl (1 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/Forms/КлиентскийКонструктор/Module.bsl (1 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl (1 hunks)
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl (1 hunks)
  • fixtures/demo-configuration/src/AccountingRegisters/Основной/Основной.mdo (0 hunks)
  • fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (1 hunks)
  • fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_Мокито/Module.bsl (2 hunks)
  • tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl (2 hunks)
  • tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl (2 hunks)
  • tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1 hunks)
  • tests/src/Configuration/Configuration.mdo (1 hunks)
Files not reviewed due to no reviewable changes (1)
  • fixtures/demo-configuration/src/AccountingRegisters/Основной/Основной.mdo
Files skipped from review as they are similar to previous changes (5)
  • exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебныйСервер/Module.bsl
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/Forms/КлиентскийКонструктор/Module.bsl
  • exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl
  • tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl
  • tests/src/Configuration/Configuration.mdo
Additional context used
LanguageTool
documentation/docs/features/test-data/data-generation.md

[uncategorized] ~97-~97: Прилагательное не согласуется с существительным по падежу.
Context: ...ние пустышек Создание записей в базе с минимальным заполнения (наименование, код, номер, дата). Пол...

(Unify_Adj_NN_case)

Additional comments not posted (16)
fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (2)

1-21: Структура файла соответствует лучшим практикам

Файл имеет правильную структуру:

  • Присутствует уведомление об авторских правах
  • Корректно размещена директива препроцессора
  • Использование областей (#Область) улучшает читаемость кода

Also applies to: 39-41


23-37: Логика процедуры ПередЗаписью реализована корректно

Процедура правильно выполняет следующие действия:

  • Проверяет, загружаются ли данные, и выходит, если это так
  • Итерирует по всем строкам объекта
  • Проверяет, что курс валюты положительный

Это обеспечивает корректную валидацию данных перед записью.

exts/yaxunit/src/CommonModules/ЮТРазрешениеЗависимостейСлужебныйКлиент/Module.bsl (1)

124-125: Логичное изменение порядка операций.

Перемещение присваивания ПолноеИмяСервер после установки Результат.СохраняемыйКонтекстСервер является правильным решением. Это гарантирует, что Результат.СохраняемыйКонтекстСервер.РабочийКаталог уже инициализирован перед использованием, что предотвращает потенциальные ошибки при обращении к неинициализированным данным. Такой подход улучшает надежность кода и соответствует целям PR по улучшению обработки движений в регистрах.

fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo (2)

109-109: Проанализируйте влияние изменения значения по умолчанию

Изменение значения по умолчанию с конкретного числа на неопределенное значение может повлиять на инициализацию новых записей в регистре "КурсыВалют".

Рассмотрите следующие аспекты:

  1. Убедитесь, что все места в коде, где создаются новые записи курсов валют, корректно обрабатывают неопределенное значение.
  2. Проверьте, не повлияет ли это изменение на существующие запросы или отчеты, которые могли предполагать наличие конкретного значения по умолчанию.
  3. Обновите документацию, если в ней упоминалось конкретное значение по умолчанию для курса валюты.

Для проверки влияния этого изменения выполните следующий скрипт:

#!/bin/bash
# Поиск мест использования реквизита "Курс" регистра сведений "КурсыВалют"
rg --type xml -i 'КурсыВалют.*Курс'
rg --type bsl -i 'КурсыВалют.*Курс'

Этот скрипт поможет найти все места в конфигурации, где используется реквизит "Курс" регистра сведений "КурсыВалют", что позволит оценить потенциальное влияние изменения.


Line range hint 1-165: Требуется уточнение по расхождениям между сводкой изменений и фактическими изменениями

В сводке изменений, сгенерированной ИИ, упоминаются несколько удалений элементов, таких как <fullTextSearch>DontUse</fullTextSearch> и <nonNegative>true</nonNegative>, которые не отражены в предоставленном дифе файла.

Прошу уточнить:

  1. Были ли эти изменения действительно внесены и затем отменены?
  2. Возможно ли, что эти изменения относятся к другим файлам в рамках данного PR?
  3. Если изменения были внесены, но не отражены в дифе, не могли бы вы предоставить обновленную версию файла для повторного рассмотрения?

Для проверки наличия упомянутых изменений в других файлах конфигурации выполните следующий скрипт:

Этот скрипт поможет определить, были ли упомянутые изменения внесены в другие файлы конфигурации.

exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl (1)

290-290: Улучшение метода получения данных строки табличной части.

Замена вызова метода ДанныеСтроки на ДанныеСтрокиТабличнойЧасти является положительным изменением. Новое название метода более точно отражает его назначение, что улучшает читаемость и понимание кода. Это изменение соответствует целям PR по введению конструктора для установки движений документов и конструктора для коллекций.

tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl (2)

150-168: Изменения корректны, но требуют дополнительной проверки и возможной доработки.

Обновление функции СоздатьЗаписьРегистраСведений_ОбменДанными соответствует переходу от цен товаров к курсам валют. Логика валидации была правильно обновлена.

Рекомендуется выполнить следующие действия:

  1. Проверить, что все связанные части кодовой базы отражают это изменение.
  2. Убедиться, что сообщение об ошибке соответствует языковым стандартам приложения.
#!/bin/bash
# Поиск использования РегистрСведений.КурсыВалют
rg --type bsl "РегистрСведений.КурсыВалют" -A 5

# Поиск похожих сообщений об ошибках для проверки согласованности
rg --type bsl "не может быть отрицательным или нулем" -A 2

Рассмотрите возможность вынесения сообщения об ошибке в константу или ресурс локализации для обеспечения единообразия и упрощения будущих изменений.


135-140: Изменения корректны, но требуют дополнительной проверки.

Изменения в функции СоздатьЗаписьРегистраСведений выглядят правильными и соответствуют переходу от обработки цен товаров к курсам валют. Использование случайного положительного числа для курса валюты является подходящим подходом.

Рекомендуется выполнить следующие проверки:

  1. Убедиться, что все связанные тесты обновлены с учетом этих изменений.
  2. Проверить, что все места использования этой функции в кодовой базе обновлены соответствующим образом.
Verification successful

Изменения корректны и подтверждены.

Изменения в функции СоздатьЗаписьРегистраСведений применяются только в тестовых модулях и не затрагивают основной код. Все связанные тесты обновлены соответствующим образом.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования функции СоздатьЗаписьРегистраСведений
rg --type bsl "СоздатьЗаписьРегистраСведений" -A 5

Length of output: 342


Script:

#!/bin/bash
# Поиск использования функции СоздатьЗаписьРегистраСведений во всех файлах .bsl
rg "СоздатьЗаписьРегистраСведений" --glob "*.bsl" -A5

Length of output: 2265


Script:

#!/bin/bash
# Глобальный поиск всех вызовов функции СоздатьЗаписьРегистраСведений во всех .bsl файлах
rg "СоздатьЗаписьРегистраСведений\s*\(" --glob "*.bsl"

Length of output: 172

tests/src/CommonModules/ОМ_Мокито/Module.bsl (1)

316-317: Одобрено: Добавление и использование объекта Регистратор

Добавление объекта Регистратор и его использование в НаборЗаписей и НаборЗаписей2 является правильным решением для создания движений в регистре сведений, подчиненном регистратору. Эти изменения соответствуют целям PR и решают проблему, описанную в связанной задаче #120.

Also applies to: 319-319, 337-337

tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl (1)

238-242: Улучшение тестирования курса валюты.

Изменения в этом сегменте кода улучшают тестирование курса валюты:

  1. Введение переменной Курс с случайным положительным значением делает тест более детерминированным.
  2. Прямая установка Курс в конструкторе объекта упрощает понимание теста.
  3. Обновление проверки на использование Курс вместо ДанныеОбъекта.Курс обеспечивает согласованность теста.

Эти изменения повышают надежность и читаемость теста.

Also applies to: 251-251

tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl (1)

631-631: Одобрено: Использование случайного положительного числа для курса валюты.

Хорошее решение использовать случайное положительное число для курса валюты. Это делает тест более реалистичным и надежным.

exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (5)

23-24: Добавление проверки инициализации контекста

Отлично, что вы добавили вызов ПроверитьИнициализациюКонтекста(Контекст); в начало процедур и функций. Это повысит надежность кода, гарантируя, что контекст всегда корректно инициализирован перед выполнением дальнейших операций.

Also applies to: 34-35, 48-49, 69-70, 88-89, 110-111, 122-123, 135-136, 143-144, 157-160, 168-171, 186-189, 198-201, 210-211, 225-226, 240-242, 355-357, 465-467, 478-481


296-297: Повторная проверка форматирования и вложенности функций

Ранее было отмечено, что в строке 296 отсутствует пробел перед Тогда, и в строке 297 используется вложенный вызов функций при инициализации параметров метода СтрШаблон. Убедитесь, что эти замечания устранены, чтобы улучшить читаемость и соответствие стандартам кодирования.


355-372: Проверка корректности создания нового контекста конструктора движений

Функция НовыйКонтекстКонструктораДвижений добавлена корректно и обеспечивает создание нового контекста для конструктора движений. Убедитесь, что все необходимые параметры передаются и обрабатываются правильно, а также что функция используется во всех необходимых местах.


448-451: Расширение функции ТекущаяЗапись для поддержки коллекций

Изменения в функции ТекущаяЗапись учитывают возможность работы с конструкторами коллекций. Это улучшает универсальность функции и обеспечивает корректную обработку различных типов контекстов.


465-467: Добавление вспомогательных функций для определения состояния контекста

Функции ФокусНаТабличнойЧасти и ЭтоКонструкторКоллекции добавлены для упрощения проверки состояния контекста. Это улучшает читаемость кода и способствует его поддерживаемости.

Also applies to: 472-474

@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@github-actions github-actions bot deleted a comment from alkoleft Sep 24, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Sep 24, 2024
@alkoleft
Copy link
Member Author

@coderabbitai Сделай переводы всех строк в коде и создай suggestions.

Используя подход НСтр("ru='Курс не может быть отрицательным или нулем';en='Exchange rate cannot be negative or zero'");

Copy link

coderabbitai bot commented Sep 24, 2024

Oops, something went wrong! Please try again later. 🐰 💔

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Outside diff range and nitpick comments (3)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (3)

92-93: Проверка выброса исключения на корректность использования метода

В строках 92-93 выполняется проверка выброса исключения при вызове метода "Установить" без предварительного добавления строки:

ЮТест.ОжидаетЧто(Конструктор)
    .Метод("Установить", ЮТКоллекции.ЗначениеВМассиве("Покупатель", Покупатель)).ВыбрасываетИсключение("Сначала необходимо добавить строку");

Убедитесь, что такая ситуация действительно возможна в использовании конструктора движений и что подобная проверка необходима для обеспечения корректности поведения.


193-196: Единообразие использования кавычек в сообщениях исключений

В сообщении исключения используются обратные кавычки для обозначения названий объектов:

.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `НесуществующийРеквизит`");

Для улучшения читаемости и единообразия рекомендуется использовать один стиль кавычек в сообщениях, например, двойные кавычки или кавычки «ёлочки».


280-295: Улучшение читаемости проверок записей регистра сведений

В блоке проверки записей регистра:

ЮТест.ОжидаетЧто(ЗаписиРегистра)
    .Заполнено()
    .ИмеетДлину(1)
    .Свойство("[0].Регистратор").Равно(Документ)
    .Свойство("[0].Товар").Равно(Товар)
    .Свойство("[0].ВидЦен").Равно(ВидыЦены)
    .Свойство("[0].Цена").Равно(Цена)
;

Длинные цепочки методов могут снижать читаемость кода. Рекомендуется разбить проверку на несколько отдельных утверждений или добавить комментарии для повышения понятности.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 0b72452 and 6ea961c.

Files selected for processing (3)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl (17 hunks)
  • fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl (1 hunks)
  • tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1 hunks)
Files skipped from review as they are similar to previous changes (2)
  • exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl
  • fixtures/demo-configuration/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl
Additional comments not posted (1)
tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl (1)

109-114: Проверка корректности установки пользовательского периода

При установке периода в конструкторе движений:

.Установить("Период", Период);

Рекомендуется убедиться, что установка пользовательского периода не конфликтует с системными настройками периода документа или регистра, и что это не приведет к некорректному поведению при записи движений.

Comment on lines +38 to +60
Процедура Инициализировать() Экспорт

// Создаем документ
Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара");

// Инициализируем конструктор движений
Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");

// Проверяем, что конструктор инициализирован
ЮТест.ОжидаетЧто(Конструктор, "Конструктор должен быть инициализирован")
.НеРавно(Неопределено);

// Проверяем, что данные конструктора пусты
Данные = Конструктор.Данные();
ЮТест.ОжидаетЧто(Данные, "Данные конструктора должны быть пустым массивом")
.ИмеетТип("Массив")
.Равно(Новый Массив);

ЮТест.ОжидаетЧто(ЮТест.Данные())
.Метод("КонструкторДвижений", ЮТКоллекции.ЗначениеВМассиве(Документ, "НесуществующийРегистр"))
.ВыбрасываетИсключение("Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр""");

КонецПроцедуры
Copy link

@coderabbitai coderabbitai bot Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Предложение по устранению дублирования кода при создании документов

В нескольких процедурах, таких как "Инициализировать", "ДобавитьСтроку", "Установить" и других, повторяется код по созданию документов и инициализации конструктора движений. Рекомендуется вынести этот повторяющийся код в отдельную вспомогательную процедуру или функцию для повышения модульности и уменьшения дублирования кода.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думаю что в тестах дублирование оправдано

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alkoleft, понятно, спасибо за пояснение.

(っ˘̩╭╮˘̩)っ


Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:38-60
Timestamp: 2024-09-24T21:57:03.102Z
Learning: В тестах дублирование кода при создании документов и инициализации конструкторов движений оправдано.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:

```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
    .Заполнено()
    .ИмеетДлину(N)
    .Свойство("[0].Параметр").Равно(Значение)
;

</details>

<!-- This is an auto-generated reply by CodeRabbit -->


ЮТест.ОжидаетЧто(ЮТест.Данные())
.Метод("КонструкторДвижений", ЮТКоллекции.ЗначениеВМассиве(Документ, "НесуществующийРегистр"))
.ВыбрасываетИсключение("Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр""");
Copy link

@coderabbitai coderabbitai bot Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Некорректное использование кавычек в сообщении исключения

В строке 58 при формировании сообщения исключения используются двойные кавычки внутри строки, что может привести к ошибкам при выводе сообщения:

"Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр"""

Рекомендуется использовать одинарные кавычки для обозначения имени регистра или экранировать двойные кавычки, чтобы сообщение отображалось корректно.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это синтаксис языка 1с (bsl), это способ экранирования двойных кавычек

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alkoleft, спасибо за разъяснение. Я учту это при будущих обзорах.

(_/)
(•.•)
( 💭)


Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:58-58
Timestamp: 2024-09-24T21:56:56.855Z
Learning: В языке 1С (BSL) для экранирования двойных кавычек внутри строк используется удвоенная кавычка (`""`).

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:

```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
    .Заполнено()
    .ИмеетДлину(N)
    .Свойство("[0].Параметр").Равно(Значение)
;

</details>

<!-- This is an auto-generated reply by CodeRabbit -->

Comment on lines +75 to +77
.Свойство(0)
.ИмеетТип("Структура")
.НеЗаполнено();
Copy link

@coderabbitai coderabbitai bot Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Потенциальная ошибка при обращении к первому элементу массива

В блоке:

ЮТест.ОжидаетЧто(Данные)
    .Заполнено()
    .ИмеетТип("Массив")
    .ИмеетДлину(1)
    .Свойство(0)
        .ИмеетТип("Структура")
        .НеЗаполнено();

Обращение к элементу массива по индексу 0 может привести к ошибке, если массив пустой или не содержит элементов. Рекомендуется добавить проверку наличия элементов в массиве перед обращением по индексу.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Наличие элементов проверяется утверждением Заполнено() и ИмеетДлину(1)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alkoleft, спасибо за уточнение. Вы правы, наличие элементов проверяется при помощи утверждений Заполнено() и ИмеетДлину(1), поэтому дополнительная проверка не требуется. Извините за беспокойство.

(。•́︿•̀。)


Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:75-77
Timestamp: 2024-09-24T21:57:02.761Z
Learning: При проверке массивов в тестах, если используются утверждения `Заполнено()` и `ИмеетДлину(N)`, обращение к элементам массива по индексу считается безопасным, и не требуется дополнительной проверки наличия элементов.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


Learnings used
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:207-207
Timestamp: 2024-09-23T00:09:43.463Z
Learning: При написании тестов необходимо добавлять проверку записанных в регистр значений, используя методы `ЮТест.ОжидаетЧто` и `ЮТЗапросы.ДвиженияДокумента`, формируя проверки по образцу, например:

```bsl
ЮТест.ОжидаетЧто(ЮТЗапросы.ДвиженияДокумента(Документ, "Регистр"))
    .Заполнено()
    .ИмеетДлину(N)
    .Свойство("[0].Параметр").Равно(Значение)
;

</details>

<!-- This is an auto-generated reply by CodeRabbit -->

Comment on lines +228 to +231
МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("Несуществующий1");
ЮТест.ОжидаетЧто(Конструктор)
.Метод("ФикцияРеквизитов", МассивПараметров)
.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Устранение дублирования в проверках выброса исключений

Код проверки выброса исключения при указании несуществующего реквизита повторяется:

ЮТест.ОжидаетЧто(Конструктор)
    .Метод("ФикцияРеквизитов", МассивПараметров)
    .ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`");

Рекомендуется вынести этот код в отдельную функцию или использовать параметризацию тестов для уменьшения дублирования и облегчения поддержки тестового кода.

Comment on lines +250 to +257
ОбязательныеПоля = ЮТКоллекции.ЗначениеВМассиве("Товар", "Склад");

// Проверяем, что все обязательные поля заполнены
Утверждение = ЮТест.ОжидаетЧто(Данные);
Для Каждого Поле Из ОбязательныеПоля Цикл
Утверждение.Свойство(Поле)
.Заполнено();
КонецЦикла;
Copy link

@coderabbitai coderabbitai bot Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Проверка наличия реквизитов в данных строки перед проверкой заполненности

В цикле проверки обязательных полей:

Для Каждого Поле Из ОбязательныеПоля Цикл
    Утверждение.Свойство(Поле)
        .Заполнено();
КонецЦикла;

Если в данных строки отсутствует какой-либо из обязательных реквизитов, это приведет к ошибке выполнения. Рекомендуется добавить проверку наличия реквизита в данных перед проверкой его заполненности.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Утверждение Свойство(Поле) как раз проверяет наличие реквизита

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alkoleft, спасибо за разъяснение. Действительно, метод Свойство(Поле) проверяет наличие реквизита, что предотвращает ошибку выполнения при его отсутствии.

(_/)
( •_•)
( >💡< )


Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:250-257
Timestamp: 2024-09-24T21:57:11.772Z
Learning: Метод `Свойство(Поле)` в `ЮТест.ОжидаетЧто` проверяет наличие реквизита и предотвращает ошибку выполнения, если реквизит отсутствует.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Comment on lines +302 to +313
Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");

// Инициализируем конструктор движений
ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы")
.ДобавитьСтроку()
.ФикцияРеквизитов("Товар, Склад, Количество")
.Записать();

ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы")
.СодержитЗаписи(ЮТест.Предикат()
.Реквизит("Регистратор").Равно(Документ));

Copy link

@coderabbitai coderabbitai bot Sep 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Отсутствие проверки результата записи движений регистра накопления

После записи движений в процедуре "Записать_РегистрНакопления" отсутствует проверка того, что записи были успешно созданы и содержат ожидаемые данные. Рекомендуется добавить проверки, аналогичные тем, что используются в процедуре "Записать_РегистрСведений", чтобы убедиться в корректности записанных движений.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Наличие записей проверяется утверждением ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи() этого достаточно

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alkoleft, спасибо за уточнение. Если проверка ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи() достаточна для ваших нужд, то дополнительных замечаний нет.


Learnings added
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: tests/src/CommonModules/Обр_ЮТКонструкторДвижений_МО/Module.bsl:302-313
Timestamp: 2024-09-24T21:56:58.470Z
Learning: В процедуре "Записать_РегистрНакопления" наличие записей проверяется с помощью `ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы").СодержитЗаписи()`, что достаточно для проверки записей.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@alkoleft
Copy link
Member Author

@coderabbitai Сделай переводы всех строк в коде и создай suggestions.

Используя подход НСтр("ru='Курс не может быть отрицательным или нулем';en='Exchange rate cannot be negative or zero'");

Copy link

coderabbitai bot commented Sep 24, 2024

Oops, something went wrong! Please try again later. 🐰 💔

@alkoleft alkoleft merged commit 11b8110 into develop Sep 24, 2024
18 of 21 checks passed
@alkoleft alkoleft deleted the feature/120 branch September 24, 2024 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Тестовые данные для Регистров сведений с регистратором
1 participant